﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Gustozzi.DAL;
using System.Text;
namespace WebGustozzi.ModuloVentas
{
    public partial class wfAgregarProductoPromocion : System.Web.UI.Page
    {
        #region "Variables"
        VentasDataEntities contexto = null;
        #endregion

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                divProducto.Visible = false;
                divPromocion.Visible = true;
                cargarCombos();
            }
        }

        protected void imbAceptar_Click(object sender, ImageClickEventArgs e)
        {
            try
            {
                guardar();
            }
            catch (Exception)
            {
                
                throw;
            }

        }


        public void cargarCombos()
        {

            if (contexto == null)
            {
                contexto = new VentasDataEntities();
            }

            var categorias = from p in contexto.CategoriasProductos
                             select new
                             {
                                 codigo = p.codigoCategoriaPdto,
                                 descripcion = p.descripcion
                             };
            ddlCategoria.DataSource = categorias;
            ddlCategoria.DataTextField = "descripcion";
            ddlCategoria.DataValueField = "codigo";
            ddlCategoria.DataBind();

            if (ddlCategoria.Items.Count >= 0)
            {
                ddlCategoria.SelectedIndex = 0;
            }

          

        }


        public void guardar() 
        {

            List <PromocionItem> listadoPedido = null ;
            if (Session["listaProductos"] == null)
            {
                listadoPedido = new List<PromocionItem>();
            }
            else 
            {
                listadoPedido = (List<PromocionItem>)Session["listaProductos"];
            }

            double cantidad=Convert.ToDouble (txtCantidad.Text);
            double precio=Convert.ToDouble(txtPreUnit.Text);


            PromocionItem oPromocionItem = new PromocionItem();
            oPromocionItem.cantidad = cantidad;
            
            int codigoProducto = Convert.ToInt32(ddlProductoCategoria.SelectedValue);
                oPromocionItem.codigoProducto = codigoProducto;
            
            oPromocionItem.precio = precio;

            
            int numItems = listadoPedido.Count;
            numItems++;
            hdfCantidadItems.Value = numItems.ToString();

                  
            oPromocionItem.codigoPromocion  = 0;
            oPromocionItem.codigoPromocionDetalle = numItems;
            listadoPedido.Add(oPromocionItem);

            Session["listaProductos"] = listadoPedido;
            

        }

        protected void ddlCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                if (ddlCategoria.SelectedIndex > 0) 
                {
                    if (contexto == null) 
                    {
                        contexto = new VentasDataEntities();
                    }
                    int idCategoria = Convert.ToInt32 (ddlCategoria.SelectedValue);
                    var productos = (from p in contexto.Productos
                                      where p.codigoCategoriaPdto == idCategoria
                                      select new
                                      {
                                          codigo = p.codigoProducto,
                                          descripcion = p.descripcion
                                      });

                    ddlProductoCategoria.DataSource = productos;
                    ddlProductoCategoria.DataTextField = "descripcion";
                    ddlProductoCategoria.DataValueField = "codigo";
                    ddlProductoCategoria.DataBind();

                    if (ddlProductoCategoria.Items.Count > 0)
                    {
                        ddlProductoCategoria.SelectedIndex = 0;
                    }
                }
               
            }
            catch (Exception)
            {
                
                throw;
            }
        }

        protected void ddlProductoCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                cargarDetalleProducto();
            }
            catch (Exception)
            {
                
                throw;
            }
        }
        public void cargarDetalleProducto()
        {

            txtPreUnit.Text = string.Empty;
            txtCantidad.Text = string.Empty;
            txtUnidad.Text = string.Empty;


            if (ddlProductoCategoria.SelectedIndex > 0)
            {
                if (contexto == null)
                {
                    contexto = new VentasDataEntities();
                }

                int idProducto = Convert.ToInt32(ddlProductoCategoria.SelectedValue);

                Producto producto = (Producto)(from p in contexto.Productos.Include("UnidadMedida")
                                               where p.codigoProducto == idProducto
                                               select p).First();

                if (producto != null)
                {
                    var lstListaPrecios = (from p in contexto.ListasPrecios
                                           orderby p.fechaUltActualiza
                                           where p.codigoProducto == idProducto
                                           select p);

                    if (lstListaPrecios != null)
                    {
                        if (lstListaPrecios.Count() > 0)
                        {
                            ListaPrecios olistaPrecios = (ListaPrecios)lstListaPrecios.First();
                            txtPreUnit.Text = olistaPrecios.precioVenta.ToString();
                            txtUnidad.Text = producto.UnidadMedida.descripcion;
                            txtCantidad.Text = "1";

                        }
                    }

                }

            }
        }

    }
}